package com.spsa.persistencia.dao;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import com.spsa.excepciones.GuardarDatosException;
import com.spsa.excepciones.RecuperarDatosException;
import com.spsa.persistencia.entidades.Reporte;

@Stateless
public class ReporteDao {
	static final Logger logger = LogManager.getLogger(ReporteDao.class.getName());

	@PersistenceContext(unitName="Notificacion")
	private EntityManager em;
	
	public List<Reporte> listar() throws RecuperarDatosException{
		try {
			Query query = em.createQuery("SELECT r FROM Reporte r ORDER BY r.fecha DESC");
			List<Reporte> rutasReportes = query.getResultList();
			return rutasReportes;
		}
		catch(Exception e) {
			logger.fatal("Error al recuperar los datos de la tabla REPORTE", e);
			throw new RecuperarDatosException("No se pudo recuperar los datos de la tabla REPORTE");
		}
	}

	public void guardar(Reporte reporte) throws GuardarDatosException{
		try {
			em.merge(reporte);
		}
		catch(Exception e) {
			logger.fatal("No se pudo guardar un Reporte en la BD. " + reporte, e);
			throw new GuardarDatosException("No se pudo guardar un Reporte en la BD. " + reporte);
		}
	}
}
